package cn.sail.shiroAuthenticator.main;

import org.apache.shiro.crypto.hash.Md5Hash;
import org.apache.shiro.util.ByteSource;

public class MD5HashTest {
    public static void main(String[] args) {
        //原生密码
        String password = "123456789";
        /*
        md5Hash 算法加密
        解决问题：确保密码非明文显示
         */
//        Md5Hash md5Hash1 = new Md5Hash(password);
//        System.out.println("md5hash值:" + md5Hash1);
        /*
        md5Hash 算法加盐加密
        解决问题：
        1，密码非明文显示
        2，不能通过彩虹表检索出密码
        （彩虹表：比如密码"123456"对应md5hash算法固定值：e10adc3949ba59abbe56e057f20f883e）
        加盐确保相同明文密码，不同盐，生成加密密码不一致
        盐可以随机生成，则加大破解密码的难度
         */
//        Object salt = ByteSource.Util.bytes("abc");
//        Md5Hash md5Hash2 = new Md5Hash(password, salt);
//        System.out.println("加盐散列之后的值:" + md5Hash2);

        //hash次数
        Object salt1 = ByteSource.Util.bytes("abc");
        Md5Hash md5Has3 = new Md5Hash(password, salt1, 2);
        System.out.println("加盐散列之后2次hash的值:" + md5Has3);
    }
}
